Skip to content

feat(kbiosystems): add Ultraseal PRO (formerly WASP) heat sealer driver#1176

Merged
rickwierenga merged 1 commit into
v1b1from
feat/kbiosystems-wasp
Jul 21, 2026
Merged

feat(kbiosystems): add Ultraseal PRO (formerly WASP) heat sealer driver#1176
rickwierenga merged 1 commit into
v1b1from
feat/kbiosystems-wasp

Conversation

@rickwierenga

@rickwierenga rickwierenga commented Jul 21, 2026

Copy link
Copy Markdown
Member

What

Adds KBiosystemsUltrasealPRO, a PyLabRobot driver for the KBiosystems Ultraseal PRO inline heat sealer, alongside the existing Ultraseal ePRO / XT Pro and KUBE sealers.

Naming: the Ultraseal PRO was sold for years as the WASP (product page, "formerly the Wasp"). Following the ePRO/eSeal precedent in this package, the class, module, and docs are named after the current product (KBiosystemsUltrasealPRO, ultraseal_pro.py, ultraseal-pro/), with "(formerly the WASP)" noted in the docstring and tutorial so people with older units can still find it.

The Ultraseal PRO speaks the same shared ASCII/RS-232 protocol as the other KBiosystems sealers (?/E/S/A/B/C/D/F, 9600 8-N-1, command-echo, CR-terminated), so KBiosystemsUltrasealPRO subclasses KBiosystemsSealer and reuses the shared transport and status/error state machine. It is closest to the Ultraseal XT Pro (inline, pneumatically driven, self-advancing/cutting film, compressed-air supply), with two deliberate differences taken from the protocol manual:

  • Status byte layoutParkMode is bit 7 (0x80) with bit 6 (0x40) a documented spare, whereas the XT Pro reports ParkMode at 0x40. UltrasealPROStatus keeps Spare = 0x40 as a member so a byte with that bit set decodes instead of raising.
  • No shuttle commands — the Ultraseal PRO draws the shuttle in, seals, and returns it automatically during the seal cycle, so it exposes no park/unpark/reset (P/U/R) over serial. It also self-initializes on power up (no I command).

Its error table is the model-specific subset (1, 2, 3, 4, 7, 9, 10) and the sealing-temperature ceiling is 200 °C per the spec sheet.

Hardware-verified

The Ultraseal PRO driver has been confirmed against a real device, so it ships without the not-tested warning. As part of this, the warning was moved out of the shared _open() and into each unverified model's setup() — so verifying a model is just deleting that one line. The ePRO and XT Pro (still unverified) keep theirs; the Ultraseal PRO has none.

Included

  • pylabrobot/kbiosystems/ultraseal_pro.pyKBiosystemsUltrasealPRO, UltrasealPROStatus
  • __init__.py exports
  • sealer.py_open() no longer emits the maturity warning (relocated to the unverified subclasses' setup())
  • Tests in sealer_tests.py (setup, seal wire-bytes, bit-7 Park Mode vs bit-6 spare, low-air decode, overheating error; extended the shared-low-bits check to include the Ultraseal PRO)
  • Docs: API autosummary entry + an ultraseal-pro/hello-world.ipynb tutorial

Checks

  • pytest pylabrobot/kbiosystems/sealer_tests.py — 19 passed
  • ruff check clean, ruff format applied, mypy clean
  • Verified the not-tested warning fires for the ePRO and XT Pro and is absent for the Ultraseal PRO

🤖 Generated with Claude Code

@rickwierenga
rickwierenga force-pushed the feat/kbiosystems-wasp branch 3 times, most recently from 7775a7e to f5c97c9 Compare July 21, 2026 07:47
@rickwierenga rickwierenga changed the title feat(kbiosystems): add WASP heat sealer driver feat(kbiosystems): add Ultraseal PRO (formerly WASP) heat sealer driver Jul 21, 2026
@ben-ray

ben-ray commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

I tested this on my kbiosystems wasp (also known as Thermo ALPS3000), and it works. Note that you need a straight rs232 cable to an rs232 port to control these instruments. I tried many different chipset rs232-usb cables, none worked besides an ol' rs232 port.

The Ultraseal PRO - sold for years as the WASP - is an inline,
pneumatically driven microplate heat sealer that advances and cuts its own
film internally and moves its shuttle automatically during the seal cycle.
It speaks the shared KBiosystems ASCII/RS-232 protocol, so
KBiosystemsUltrasealPRO subclasses KBiosystemsSealer and adds only its
status-bit layout (ParkMode at bit 7, bit 6 spare) and error table; unlike
the Ultraseal XT Pro it exposes no shuttle park/unpark/reset commands.
Named after the current product (matching the ePRO/eSeal precedent).
Hardware-verified.

Also moves the not-tested warning out of the shared _open() and into each
unverified model's setup(), so verifying a model is just deleting that line
(the ePRO and XT Pro keep theirs; the Ultraseal PRO has none).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@rickwierenga
rickwierenga force-pushed the feat/kbiosystems-wasp branch from f5c97c9 to b31dcf0 Compare July 21, 2026 22:54
@rickwierenga
rickwierenga merged commit 2f5c6a3 into v1b1 Jul 21, 2026
1 of 19 checks passed
@rickwierenga
rickwierenga deleted the feat/kbiosystems-wasp branch July 21, 2026 22:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants